package main

import (
	"fmt"
	"time"
)

func escrever(texto string, canal chan string) {
	time.Sleep(time.Second * 2)
	for i := 0; i < 5; i++ {
		canal <- texto //Envia valor para canal
		time.Sleep(time.Second)
	}
	close(canal) // Informa o programa para encerrar o canal.
}

func main() {
	canal := make(chan string)
	go escrever("Olá Mundo!", canal)
	fmt.Println("Após a função escrever. ")

	for {
		mensagem, aberto := <-canal // Recebo valor do canal.
		if !aberto {                // Encerra o loop caso o canal esteja fechado.
			break
		}
		println(mensagem)
	}

	for mensagem := range canal { // Forma mais simples de executar o canal.
		fmt.Println(mensagem)
	}
}
